<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    1.什么是函数?
    对于js来讲,函数就是把任意一段代码放到一个**盒子**里面去,在我想要执行这段代码的时候,就去执行这个盒子,执行到里面的代码

    <script>
      // for(var i=0;i<=4;i++){
      //     document.write(i);
      // }

      // function abc(){
      //     for(var i=0;i<=4;i++){
      //         document.write(i);
      //     }
      // }
      // abc()
      // abc()
      // abc()
      // abc()
    </script>

    函数分为2个阶段, 两个阶段就是放在盒子里面(声明-定义阶段)
    让盒子里面的代码去执行(调用阶段) 1.函数的定义阶段--声明函数 2种方式,声明式:
    <script>
      //声明变量
      // var a=1;//声明
      // console.log(a);//调用

      // 1.1声明式
      // function 函数
      // 使用function这个关键字来声明一个函数
      // 语法结构:
      // function 函数名(){
      //     要实现函数的代码功能
      // }
      // 函数名()

      //    function fn() {
      //      alert("你好,我是声明式的函数,我很重要,虽然我现在还是概念")
      //    }
      // function:看到它,代表接下来的结构是一个函数
      // fn:就是名字,函数的名字,我们自己去定义的,(遵循变量的命名规则)
      // ():必须要写,后面用来放参数
      // {}:代码的盒子的内容的位置
    </script>

    2.赋值式函数=:就是把一个函数当成一个值,直接赋值给一个变量
    赋值式的函数的函数名字,就是被赋值的那个变量 语法结构
    <script>
      // var fn2=function (){
      //     要实现的代码功能
      // }
    </script>

    3.函数的调用阶段 调用方法:通过函数名称+小括号进行调用,无论声明式还是赋值式
    注意:定义一个函数如果没有被调用的情况下,写在{}里面的东西没有意义的 区别:
    声明式函数的调用方法,可以是前置,换句话说,放前面调用 赋值式函数不可以前置访问
    <script>
      // fn()
      // function fn() {
      //     alert("111")
      // }
      // fn()

      // fn2();//fn2 is not a function
      var fn2 = function () {
        alert("2222");
      }; 
      fn2();

      console.log(typeof fn2); //function
    </script>
  </body>
</html>
